#include <my_head.h>
int count = 0;

int flag = 0; // 标志位 0 生产者执行 1 消费者执行

// 生产者线程
void *task_func_1(void *arg){
    while(1){
        if(0 == flag){
            sleep(1);
            count++;
            printf("我是生产者线程 [%ld] 生产了一辆汽车 当前剩余汽车 [%d] 辆\n", \
                        pthread_self(), count);
            flag = 1;
        }
    }
}

// 消费者线程
void *task_func_2(void *arg){
    while(1){
        if(1 == flag){
            sleep(1);
            count--;
            printf("我是消费者线程 [%ld] 购买了一辆汽车 当前剩余汽车 [%d] 辆\n", \
                        pthread_self(), count);
            flag = 0;
        }
    }
}

int main(int argc, const char *argv[]){
    pthread_t tid1, tid2;
    int ret = 0;
    if(0 != (ret = pthread_create(&tid1, NULL, task_func_1, NULL))){
        printf("pthread_create error : [%d] [%s]\n", ret, strerror(ret));
        exit(EXIT_FAILURE);
    }
    if(0 != (ret = pthread_create(&tid2, NULL, task_func_2, NULL))){
        printf("pthread_create error : [%d] [%s]\n", ret, strerror(ret));
        exit(EXIT_FAILURE);
    }
    pthread_join(tid1, NULL);
    pthread_join(tid2, NULL);
    return 0;
}